#pragma once

class TopoDS_Shape;
class CVarList;
class TDF_Label;
class TFunction_Logbook;

class GEOMDBAPI CShapeInfo
{
public:
	CShapeInfo();
	virtual ~CShapeInfo();
	virtual void Reset(void);
	const CString& GetGUID(void){return m_szGUID;}

	virtual void GetParams(CVarList& varList, UINT nID);
	virtual void SetParams(const CVarList& varList, UINT nID);

	virtual bool GetFromLabel(TDF_Label& label);
	virtual void AddToLabel(TDF_Label& label);
	virtual bool ModifyLabel(TDF_Label& label, TFunction_Logbook& log);
protected:
	CString m_szGUID;
};

class GEOMDBAPI CShapeBuilder
{
public:
	CShapeBuilder(void);
	virtual ~CShapeBuilder(void);

	virtual bool Build(const CString& szCmdParam, TopoDS_Shape& shape);
	virtual bool Build(CShapeInfo* pShapeInfo, TopoDS_Shape& shape);
};
